/* Modelo de Productos aqui se realizan todas las consultas 
 Creado por Carlos Pastelin Morales 
 29/12/2014 */
package Modelo;

import Controlador.Conexion;
import Vistas.Interface;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author CarlosLap
 */
public class Producto {
    private String nombre = "";
    private String caducidad = "";
    private String existencia = "";
    private String precio = "";
    private String descripcion = "";
    private String especifica = "";
    private String codigobarras ="";
    private Conexion con;
    private ResultSet rs;
    public Producto() {}
    
    
    
    /**
     * @return the codigobarras
     */
    public String getCodigobarras() {
        return codigobarras;
    }

    /**
     * @param codigobarras the codigobarras to set
     */
    public void setCodigobarras(String codigobarras) {
        this.codigobarras = codigobarras;
    }
    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the caducidad
     */
    public String getCaducidad() {
        return caducidad;
    }

    /**
     * @param caducidad the caducidad to set
     */
    public void setCaducidad(String caducidad) {
        this.caducidad = caducidad;
    }

    /**
     * @return the existencia
     */
    public String getExistencia() {
        return existencia;
    }

    /**
     * @param existencia the existencia to set
     */
    public void setExistencia(String existencia) {
        this.existencia = existencia;
    }

    /**
     * @return the precio
     */
    public String getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(String precio) {
        this.precio = precio;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * @return the especifica
     */
    public String getEspecifica() {
        return especifica;
    }

    /**
     * @param especifica the especifica to set
     */
    public void setEspecifica(String especifica) {
        this.especifica = especifica;
    }

    /**
     * @return the con
     */
    public Conexion getCon() {
        return con;
    }

    /**
     * @param con the con to set
     */
    public void setCon(Conexion con) {
        this.con = con;
    }
    
      public void estructuraProductos(DefaultTableModel modelo){
         modelo.addColumn("Num.Producto");
         modelo.addColumn("Codigo de barras");
         modelo.addColumn("Nombre");
         modelo.addColumn("Precio"); 
         modelo.addColumn("Caducidad");
         modelo.addColumn("Existencia");
         modelo.addColumn("Descripcion");
         modelo.addColumn("Especificaciones");
  }  
       public void estructuraAlrta(DefaultTableModel modelo){
         modelo.addColumn("Numbre Producto");
         modelo.addColumn("Caducidad");
         modelo.addColumn("Existencia");
         modelo.addColumn("Precio");
  }  
    public String insertar(){
       String Error=""; 
        try{  
             con = new Conexion();
            String sql = "INSERT INTO `productos`(`codigo_barras`,`nombre_producto`, `precio`, `caducidad`, `existencia`, `descripcion`, `especificaciones`) VALUES ('"+codigobarras+"','"+nombre+"','"+precio+"','"+caducidad+"','"+existencia+"','"+descripcion+"','"+especifica+"')";
             con.ejecutar(sql);
            } catch (ClassNotFoundException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                Error="Se produjo un error insertar el producto por favor ponte en contacto con soporte tecnico";
            } catch (SQLException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                Error="Se produjo un error insertar el producto por favor ponte en contacto con soporte tecnico";
            } catch (InstantiationException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                Error="Se produjo un error insertar el producto por favor ponte en contacto con soporte tecnico";
            } catch (IllegalAccessException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
                Error="Al parecer intentaro acceder ilegalmente porfavor ponte en contacto con soporte tecnico";
            }
        return Error;
        }
       public void modificaexistencia(Integer existencia,String ID){
      
        try{  
             con = new Conexion();
            String sql = "UPDATE  `productos` SET  `existencia` = "+existencia+" WHERE `id_producto` ="+ID+"";
             con.ejecutar(sql);
            } catch (ClassNotFoundException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                 Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
   public ResultSet Buscar(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
                String sql ="SELECT * FROM productos WHERE nombre_producto LIKE '%"+nombre+"%'";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
   public ResultSet Alerta(){
       try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
               String sql ="SELECT `nombre_producto`, `caducidad`, `existencia`, `precio` FROM `productos` WHERE DATE(caducidad) = DATE(NOW()) OR DATE(caducidad) < DATE(NOW()) OR DATEDIFF(caducidad,NOW()) <= 90";
               rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs; 
   }
   
  
     public ResultSet Buscarxnombre(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
               String sql ="SELECT * FROM productos WHERE nombre_producto LIKE '"+nombre+"%' AND existencia > 0";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
     public ResultSet Buscarxdescrip(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
              String sql ="SELECT * FROM productos WHERE descripcion LIKE '%"+descripcion+"%'";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
     public ResultSet Buscarxcodigobarras(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
              String sql ="SELECT * FROM productos WHERE codigo_barras LIKE '%"+codigobarras+"%'";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
        public ResultSet Buscarcodigobarras(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
              String sql ="SELECT * FROM productos WHERE codigo_barras="+codigobarras;
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
     
     public ResultSet alertaexistenciapro(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
                String sql ="SELECT `nombre_producto`, `caducidad`, `existencia`, `precio` FROM `productos` WHERE existencia < 10";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 } 
      public ResultSet selectprodu(String pro){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
                String sql = "SELECT * FROM `negocio`.`productos` WHERE nombre_producto = '"+pro+"'";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
public ResultSet Agregaxcodigobarras(){     
            try {
                // se hace la conexion con la base de datos
                con = new Conexion();
                //sentencia sql para extraer los datos del usuario insertado
              String sql ="SELECT nombre_producto,precio FROM productos WHERE codigo_barras LIKE '%"+codigobarras+"%'";
                rs = con.Consulta(sql);
                // se obtienen los datos de la consulta    
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            }
  return rs;
 }
}
